#ifndef CONFIG_HPP_
#define CONFIG_HPP_

#include <string>
#include <sstream>


class Config{

private:

	static Config *configInstance;

	std::string address4;
	std::string address6;
	std::string serverName;

	int parentServerPort;
	int childServerPort;
	int childClientPort;

	std::string rawDataLogFile;
	std::string serverInformationFile;
	std::string logFile;

	bool connectToServerFlag;
	bool ipv6Flag;
	bool helpFlag;


	Config();
	Config(const Config&);

	void setDefault();


public:

	static Config *instance();

	void parseArguments(int argc, char **argv);

	std::string& getAddress();
	std::string& getAddress4();
	std::string& getAddress6();
	std::string& getServerName();

	int getParentServerPort();
	int getChildServerPort();
	int getChildClientPort();

	std::string& getRawDataLogFile();
	std::string& getServerInformationFile();
	std::string& getLogFile();

	bool isConnectToServerFlag();
	bool isHelpFlag();
	bool isIPv6Flag();

};


#endif /* CONFIG_HPP_ */
